package br.ufc.vv.dao;

import java.util.List;

import javax.mail.MessagingException;
import javax.mail.internet.AddressException;

import br.ufc.vv.email.SendMail;
import br.ufc.vv.model.Candidato;
import br.ufc.vv.model.ProcessoVotacao;
import br.ufc.vv.model.Usuario;
import br.ufc.vv.relatorio.Relatorio;

public class DaoFactory {

	/*
	public static List<Usuario> findUsuariosParticipantesVotacao(ProcessoVotacao votacao) {
		List<Usuario> usuarios = new ArrayList<Usuario>();
		usuarios = votacao.getUsuarios();
		return usuarios;
	}
	*/
	
	/*
	public static List<Candidato> findCandidatosParticipantesVotacao(ProcessoVotacao votacao) {
		List<Candidato> candidatos = new ArrayList<Candidato>();
		candidatos = votacao.getCandidatos();
		return candidatos;
	}
	*/
	
	
	public static void gerarRelatoriosEleicoesAtual(ProcessoVotacao eleicoes,
			List<Usuario> alunos) {
		Relatorio.gerarRelatorio(eleicoes, alunos);
	}

	public static void enviarEmailAlunos(List<Usuario> alunos) {
		for (Usuario a : alunos) {
			try {
				SendMail.sendMail(a.getE_mail(), "asadsasas","shkjakdhskdhkjsh");
			} catch (AddressException e) {
				e.printStackTrace();
			} catch (MessagingException e) {
				e.printStackTrace();
			}
		}
	}

	public static void inserirCandidato(Candidato candidato) {
		CandidatoDao cand = new CandidatoDao();
		cand.save(candidato);
	}
	
	public static void updateCandidato(Candidato candidato) {
		CandidatoDao cand = new CandidatoDao();
		cand.update(candidato);
	}
	
	
	public static void deleteCandidato(Candidato candidato) {
		CandidatoDao cand = new CandidatoDao();
		cand.delete(candidato);
	}
	
	public static Candidato findCandidato(Long id){
		CandidatoDao cand = new CandidatoDao();
		return cand.get(id);	
	}
	
	public static List<Candidato> findCandidatos(){
		CandidatoDao cand = new CandidatoDao();
		return cand.list();
	}
	
	public static List<Candidato> findCandidatosPorVotacao(ProcessoVotacao votacao) {
		
		int id = votacao.getId();
		Long id_votacao = Long.valueOf(id);
		
		CandidatoDao cand = new CandidatoDao();
		List<Candidato> candidatos = cand.listCandidatoVotacao(id_votacao);
		return candidatos;
	}
	
	public static void inserirEleicao(ProcessoVotacao eleicao) {
		ProcessoVotacaoDao pvd = new ProcessoVotacaoDao();
		pvd.save(eleicao);
	}
	
	public static void updateEleicao(ProcessoVotacao eleicao) {
		ProcessoVotacaoDao pvd = new ProcessoVotacaoDao();
		pvd.update(eleicao);
	}
	
	
	public static void deleteEleicao(ProcessoVotacao eleicao) {
		ProcessoVotacaoDao pvd = new ProcessoVotacaoDao();
		pvd.delete(eleicao);
	}
	
	public static ProcessoVotacao findEleicao(Long id){
			ProcessoVotacaoDao pvd = new ProcessoVotacaoDao();
			return pvd.get(id);	
	}
	
	public static List<ProcessoVotacao> findEleicoes(){
		ProcessoVotacaoDao pvd = new ProcessoVotacaoDao();
		return pvd.list();
	}
	
	public static List<Usuario> findUsuariosCadastrados(){
		UsuarioDao ald = new UsuarioDao();
		return ald.list();
	}
	
	public static Usuario entrarNoSistema(Usuario usuario){
		UsuarioDao userDao = new UsuarioDao();
		return userDao.logar(usuario);
	}
}
